package web.fabrimind.mwm.domain;

import java.math.BigDecimal;

import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import web.fabrimind.common.annotation.Excel;
import web.fabrimind.common.core.domain.BaseEntity;

/**
 * 物料库存对象 material_inventory
 *
 * @author ruoyi
 * @date 2025-03-28
 */
public class MaterialInventory extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /**
     * 库存ID
     */
    private Long inventoryId;

    /**
     * 物料ID
     */
    @Excel(name = "物料ID")
    private Long materialId;

    /**
     * 仓库ID
     */
    @Excel(name = "仓库ID")
    private Long warehouseId;

    /**
     * 库位ID
     */
    @Excel(name = "库位ID")
    private Long locationId;

    /**
     * 批次ID
     */
    @Excel(name = "批次ID")
    private Long batchId;

    /**
     * 库存数量
     */
    @Excel(name = "库存数量")
    private BigDecimal quantity;

    /**
     * 锁定数量
     */
    @Excel(name = "锁定数量")
    private BigDecimal lockedQuantity;

    /**
     * 可用数量
     */
    @Excel(name = "可用数量")
    private BigDecimal availableQuantity;

    /**
     * 状态（0正常 1锁定 2待检验）
     */
    @Excel(name = "状态", readConverterExp = "0=正常,1=锁定,2=待检验")
    private String status;

    /**
     * 物料名称
     */
    @Excel(name = "物料名称")
    private String materialName;

    @Excel(name = "物料编码")   
    private String materialCode;

    @Excel(name = "规格型号")
    private String specification;
    /**
     * 仓库名称
     */
    @Excel(name = "仓库名称")
    private String warehouseName;

    /**
     * 库位名称
     */
    @Excel(name = "库位名称")
    private String locationName;

    /**
     * 批次号码
     */
    @Excel(name = "批次号码")
    private String batchCode;


    public String getBatchCode() {
        return batchCode;
    }

    public void setBatchCode(String batchCode) {
        this.batchCode = batchCode;
    }

    public String getLocationName() {
        return locationName;
    }

    public void setLocationName(String locationName) {
        this.locationName = locationName;
    }

    public String getWarehouseName() {
        return warehouseName;
    }

    public void setWarehouseName(String warehouseName) {
        this.warehouseName = warehouseName;
    }

    public String getMaterialName() {
        return materialName;
    }

    public void setMaterialName(String materialName) {
        this.materialName = materialName;
    }

    public void setMaterialCode(String materialCode) 
    {
        this.materialCode = materialCode;
    }

    public String getMaterialCode() 
    {
        return materialCode;
    }

    public void setSpecification(String specification) {
        this.specification = specification;
    }

    public String getSpecification() {
        return specification;
    }

    public void setInventoryId(Long inventoryId) {
        this.inventoryId = inventoryId;
    }

    public Long getInventoryId() {
        return inventoryId;
    }

    public void setMaterialId(Long materialId) {
        this.materialId = materialId;
    }

    public Long getMaterialId() {
        return materialId;
    }

    public void setWarehouseId(Long warehouseId) {
        this.warehouseId = warehouseId;
    }

    public Long getWarehouseId() {
        return warehouseId;
    }

    public void setLocationId(Long locationId) {
        this.locationId = locationId;
    }

    public Long getLocationId() {
        return locationId;
    }

    public void setBatchId(Long batchId) {
        this.batchId = batchId;
    }

    public Long getBatchId() {
        return batchId;
    }

    public void setQuantity(BigDecimal quantity) {
        this.quantity = quantity;
    }

    public BigDecimal getQuantity() {
        return quantity;
    }

    public void setLockedQuantity(BigDecimal lockedQuantity) {
        this.lockedQuantity = lockedQuantity;
    }

    public BigDecimal getLockedQuantity() {
        return lockedQuantity;
    }

    public void setAvailableQuantity(BigDecimal availableQuantity) {
        this.availableQuantity = availableQuantity;
    }

    public BigDecimal getAvailableQuantity() {
        return availableQuantity;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public String getStatus() {
        return status;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
                .append("inventoryId", getInventoryId())
                .append("materialId", getMaterialId())
                .append("warehouseId", getWarehouseId())
                .append("locationId", getLocationId())
                .append("batchId", getBatchId())
                .append("quantity", getQuantity())
                .append("lockedQuantity", getLockedQuantity())
                .append("availableQuantity", getAvailableQuantity())
                .append("status", getStatus())
                .append("createBy", getCreateBy())
                .append("createTime", getCreateTime())
                .append("updateBy", getUpdateBy())
                .append("updateTime", getUpdateTime())
                .append("remark", getRemark())
                .append("materialName", getMaterialName())
                .append("warehouseName", getWarehouseName())
                .append("locationName", getLocationName())
                .append("materialCode", getMaterialCode())
                .append("specification", getSpecification())
                .toString();
    }
}
